﻿// Inner Fire 游戏引擎库
// ButtonInfo - 用于按钮的Prefab
//
// Copyright (c) 2025 by 尔西大帝. All rights reserved.
//
// 用于按钮的Prefab
//
// Author: 尔西大帝
// Email: 2670613871@qq.com
// Created: 2025-04-24

#pragma once

#include <ui/prefab/image_info.h>
#include <ui/prefab/label_info.h>

namespace ifire::ui {

// 当前Button的状态
enum class ButtonState {
  NORMAL, // 什么也不发生的正常状态
  HOVER,  // 鼠标在上方移动
  PUSHED, // 按下鼠标按钮
};

class ButtonInfo : public XmlInfo {
public:
  ButtonInfo(const XmlNode& node)
      : XmlInfo(node, 0)
      , widget(node)
      , button(node["Button"])
      , icon(node["Icon"])
      , text(node["Text"]) {}
  ButtonInfo(const ButtonInfo& lhs) = delete;
  ButtonInfo& operator=(const ButtonInfo& lhs) = delete;
  ~ButtonInfo() = default;

public:
  dx::UIWidget widget;
  // 用于Button基座的
  ImageInfo button;
  ImageInfo icon;
  LabelInfo text;
};

using ButtonInfoPtr = std::unique_ptr<ButtonInfo>;

}; // namespace ifire::ui